Engineers use compression (also called source coding or source encoding) to reduce the bit rate of digital media content. Compression decreases the cost of storing and transmitting media information by converting the information into a lower bit rate form. Decompression (also called decoding) reconstructs a version of the original information from the compressed form. A “codec” is an encoder/decoder system. Over the last two decades, various video codec standards and formats have been adopted, and various audio codec standards and formats have been adopted. A codec standard or format typically defines options for the syntax of an encoded media bitstream (sometimes called an elementary media bitstream), detailing parameters in the elementary media bitstream when particular features are used in encoding and decoding. In many cases, a codec standard or format also provides details about the decoding operations a decoder should perform to achieve correct results in decoding.
A media container format specifies how to organize encoded media content for storage, transmission, etc. A media container format can specify metadata about the encoded media content, timing information, digital rights management information, error correction information or other information. Various container formats have been promulgated for multimedia content, including MPEG-2 TS/PS, Advanced Systems Format (“ASF”) (formerly Advanced Streaming Format), MPEG-4 (“MP4”) as defined in ISO/IEC 14496-12 (ISO base media file format), 14496-14 (MP4 file format) and 14496-15 (AVC file format), Common File Format (“CFF”) and Matroska Video Format (“MKV”). The specification for a container format such as MP4 or CFF defines how to organize encoded media content and add metadata for encoded media content so that a media file is conformant with the container format. A container format specification typically defines options for the syntax of a media file in the container format, detailing the meaning and organization of parameters in the media file when particular features are used. In some cases, a container format specification may also provide details about operations to be performed by a container format sink or container format source. A container format sink puts encoded media content in an elementary media bitstream (e.g., from a media encoder such as an audio encoder or video encoder) into a media file according to a container format. A container format source parses the media file in the container format and provides the elementary media bitstream to a media decoder for decoding.
Every day, millions of media files in container formats are produced by diverse sources. Even more media files in container formats are consumed by different users through assorted activities. In some cases, a media file in a container format is corrupted due to random bit flips during streaming or conferencing. Or, a media file may be corrupted due to a storage failure, due to improper recording with a smartphone or for another reason. For many recent container formats, however, existing tools do not provide sufficient means to verify the conformance of media files to the container formats or at least identify corrupted file containers, nor do they provide sufficient means to alter elements of media files in order to test the resilience of playback equipment to errors in the media files.